package com.ruoyi.fjtseac.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.fjtseac.domain.dto.EssayDto;
import com.ruoyi.fjtseac.domain.po.Essay;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author jxl
 * @since 2022-07-08
 */
public interface EssayService extends IService<Essay> {

    /**
     * 上传文章
     * @param essayDto 文章对象，包含文章id、文章标题、内容、封面图、类别以及上传时间
     * @return
     */
    AjaxResult addEssay(EssayDto essayDto);

    /**
     * 通过文章id查询文章
     * @param essayId 文章id
     * @return
     */
    AjaxResult selectById(Integer essayId);

    /**
     * 查询所有的文章
     * @param pageNum 当前页码
     * @param pageSize 页面最大记录数
     * @return
     */
   AjaxResult selectAll(Integer pageNum, Integer pageSize);

    /**
     * 查询对应类别的文章
     * @param  typeId 类别id
     * @param pageNum 当前页码
     * @param pageSize 页面最大记录数
     * @return
     */
   AjaxResult selectEssayByType(Integer typeId, Integer pageNum, Integer pageSize);

    /**
     * 更新文章
     * @param essayDto 文章对象，包含文章id、文章标题、内容、封面图、类别以及上传时间
     * @return
     */
    AjaxResult updateEssay(EssayDto essayDto);

    /**
     * 查询一定时间段的文章
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param pageNum 当前码
     * @param pageSize 页面最大记录数
     * @return
     */
    AjaxResult selectEssayByTime(String startTime, String endTime, Integer typeId,Integer pageNum, Integer pageSize);

    /**
     * 查询对应标题的文章
     * @param title 文章标题
     * @param pageNum 当前页码
     * @param pageSize 页面最大记录数
     * @return
     */
    AjaxResult selectEssayByTitle(String title, Integer pageNum, Integer pageSize);

    /**
     * 删除文章
     * @param essayId 文章对象，包含文章id、文章标题、内容、封面图、类别以及上传时间
     * @return
     */
    AjaxResult deleteEssayById(Integer essayId);

    /**
     * 设置轮播文章
     * @param essayIds 需要设置成轮播文章的id。
     * @return
     */
    AjaxResult setCarousel(Integer... essayIds);

    /**
     * 获取轮播文章列表
     * @return
     */
    AjaxResult getCarouselEssays();

}
